﻿using System;
using System.Collections.Generic;
using System.IO;
using System.IO.IsolatedStorage;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace Baseball.Infrastructure
{
    public static class StorageManager
    {
        static IsolatedStorageFile Storage = IsolatedStorageFile.GetUserStoreForApplication();

        static bool CreateDirectory(string Directory)
        {
            // 루트를 만들기 시도하면 무조건 성공
            if (Directory == null)
                return true;

            // 1. 지금 디렉토리가 있다면 바로 리턴
            if (Storage.DirectoryExists(Directory))
                return true;

            // 일단 부모 디렉토리 만들기를 하고 실패하면 더이상 시도하지 않고 false 리턴
            if (!CreateDirectory(Path.GetDirectoryName(Directory)))
                return false;

            // 현재 디렉토리 만들어주고
            Storage.CreateDirectory(Directory);

            return true;
        }

        public static bool CopyDataToStorageAsync(string DataPath, string StoragePath, bool Force)
        {
            // 디렉토리를 만들고
            if (!CreateDirectory(Path.GetDirectoryName(StoragePath)))
                return false;

            // 이미 파일이 존재하는 경우 넘어가고
            if (!Force && Storage.FileExists(StoragePath))
                return true;

            // DataPath에 있는 파일을 읽어서
            Stream DataStream = Application.GetResourceStream(new Uri(DataPath, UriKind.Relative)).Stream;
            Stream StorageStream = Storage.OpenFile(StoragePath, FileMode.CreateNew);

            // StorageStream에 복사
            DataStream.CopyToAsync(StorageStream);
            StorageStream.Dispose();
            return true;
        }
    }
}
